/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package almacenamiento;

import java.util.Map;


/**
 *
 * @author AMD
 */
public class Catalogo implements  java.io.Serializable {
    private String archivoCatalogo;
    private java.util.Map<String, EntradaCatalogo> entradas;
    private int numeroDeTablas;

    public Map<String, EntradaCatalogo> getEntradas() {
        return entradas;
    }

    public Catalogo(String archivoCatalogo) {
        this.archivoCatalogo = archivoCatalogo;
        entradas = new java.util.Hashtable<String, EntradaCatalogo>();
    }

    public void crearNuevaEntrada( EntradaCatalogo entrada) throws IllegalArgumentException {
        if (!existeTabla(entrada.getNombreTabla())){
            entradas.put(entrada.getNombreTabla(), entrada);
            numeroDeTablas++;
        }
        else{
            throw new IllegalArgumentException("Tabla: " + entrada.getNombreTabla() + " ya existe." );
        }
    }

    public int getNumeroDeTablas() {
        return numeroDeTablas;
    }
    protected boolean existeTabla(String nombreTabla){
        return  (entradas.get(nombreTabla) != null);
    }
    ////metodos de mi
    public void ActualizarEntrada(EntradaCatalogo entrada)throws IllegalArgumentException {
        if (existeTabla(entrada.getNombreTabla())){
            entradas.remove(entrada.getNombreTabla());
            entradas.put(entrada.getNombreTabla(), entrada);
        }
        else{
            throw new IllegalArgumentException("Tabla: " + entrada.getNombreTabla() + " no se puede actualizar." );
        }
    }
    public void EliminarEntrada(EntradaCatalogo entrada)throws IllegalArgumentException {
        if (existeTabla(entrada.getNombreTabla())){
            entradas.remove(entrada.getNombreTabla());
            numeroDeTablas--;
        }
        else{
            throw new IllegalArgumentException("Tabla: " + entrada.getNombreTabla() + " no se puede eliminar." );
        }
    }
    
    
    @Override
    public String toString() {
        return "Catalogo: " + numeroDeTablas+  " tablas. Entradas: \n"+ "\t" + entradas.toString();
    }
    
    
    
    
}
